//////////////////////////////////////////////////////////////////////////////
// INCLUDES
//////////////////////////////////////////////////////////////////////////////
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include "CuTest.h"
#include "apx_file.h"
#include "apx_es_filemap.h"


//////////////////////////////////////////////////////////////////////////////
// CONSTANTS AND DATA TYPES
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
// LOCAL FUNCTION PROTOTYPES
//////////////////////////////////////////////////////////////////////////////
static void apx_es_filemap_insert(CuTest* tc);

//////////////////////////////////////////////////////////////////////////////
// GLOBAL VARIABLES
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
// LOCAL VARIABLES
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// GLOBAL FUNCTIONS
//////////////////////////////////////////////////////////////////////////////


CuSuite* testsuite_apx_es_filemap(void)
{
   CuSuite* suite = CuSuiteNew();

   SUITE_ADD_TEST(suite, apx_es_filemap_insert);

   return suite;
}

//////////////////////////////////////////////////////////////////////////////
// LOCAL FUNCTIONS
//////////////////////////////////////////////////////////////////////////////

static void apx_es_filemap_insert(CuTest* tc)
{
   apx_es_fileMap_t localMap;
   apx_file_t file1;
   apx_file_t file2;
   memset(&file1,0,sizeof(apx_file_t));
   memset(&file2,0,sizeof(apx_file_t));
   file1.fileInfo.address=0;
   file1.fileInfo.length=200;
   file2.fileInfo.address=10000;
   file2.fileInfo.length=5000;
   apx_es_fileMap_create(&localMap);
   apx_es_fileMap_insert(&localMap, &file2);
   apx_es_fileMap_insert(&localMap, &file1);
   CuAssertIntEquals(tc, 2, localMap.curLen);
   CuAssertPtrEquals(tc, &file1, localMap.fileList[0]);
   CuAssertPtrEquals(tc, &file2, localMap.fileList[1]);
   apx_es_fileMap_clear(&localMap);
   apx_es_fileMap_insert(&localMap, &file1);
   apx_es_fileMap_insert(&localMap, &file2);
   CuAssertIntEquals(tc, 2, localMap.curLen);
   CuAssertPtrEquals(tc, &file1, localMap.fileList[0]);
   CuAssertPtrEquals(tc, &file2, localMap.fileList[1]);
}


